#ifndef _IM_LOG_H
#define _IM_LOG_H
#ifdef __cplusplus
extern "C"
  {
#endif
    /******************************************************************************
     * log functions
     */

#include "stdio.h"
#define IM_LOG_DEBUG	0
#define IM_LOG_INFO	1
#define IM_LOG_WARN	2
#define IM_LOG_ERROR	3
#define IM_LOG_FATAL	4

#define IM_LOG_MASK(p) (1<<p)
    void im_delay();
	//extern FILE *logfile; // lwx add. 2021-12-7.
    FILE *im_create_file(char *path);
    void im_close_file(FILE *fp);

    int im_log_set_mask(int mask);

	void WriteLog(char *szLog); // add [12/7/2021 Liu]

#ifdef __GNUC__
#define im_log_fmtchk __attribute__((format(printf, 1, 2)))
#else
#define im_log_fmtchk
#endif

    void im_log_fmtchk im_log_fatal(const char *fmt, ...);
    void im_log_fmtchk im_log_err(const char *fmt, ...);
    void im_log_fmtchk im_log_warn(const char *fmt, ...);
    void im_log_fmtchk im_log_info(const char *fmt, ...);
    void im_log_fmtchk im_log_debug(const char *fmt, ...);
    void im_log_write(int severity, int log_errno, const char *fmt, va_list ap);
#undef im_log_fmtchk


#ifdef __cplusplus
  }
#endif

#endif
